草庐IT

c++ - 池化线程的 SetThreadAffinityMask

全部标签

c - 为什么 AssignProcessToJobObject 在 XP 上失败并出现拒绝访问错误?

我有以下代码:#include#include#include#pragmacomment(lib,"shlwapi.lib")int__cdeclwmain(intargc,PWSTRargv[]){HANDLEJob(CreateJobObject(NULL,NULL));if(!Job){wprintf(L"Couldnotcreatejobobject,error%d\n",GetLastError());return0;}HANDLEIOPort(CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,0,1));if(!IOPort

c - kbhit() 作为转义触发器

我想将kbhit()用于“按任意键继续”功能。但是,在循环中使用kbhit()之后,按下的键存储在标准输入中。所以在下一个scanf()中,之前按下的键出现在输入中。intx,b=0;printf("Pressanykeytocontinue...")while(b==0){b=kbhit();}system("cls");printf("Enternumber:");scanf("%d",&x);因此,如果用户按下一个键,比如说字母K,k会出现在“输入数字:”之后。我曾尝试寻找解决方案,但未能使任何解决方案奏效。我试图将退格字符放入输入流中。我也尝试使用getch(),但是,用户必须

c - 为什么 PsGetCurrentProcessId() 返回 null?

我遇到了一个奇怪的问题:在“系统”进程的一个线程中,我调用了PsGetCurrentProcessId(),但得到了一个空值。此外,我检查了线程的_CLIENT_ID,发现UniqueProcess和UniqueThread都是null。我还检查了当前进程,即'system'进程,发现它的UniqueProcessId为4,这是正常的。为什么? 最佳答案 系统进程ID是一个非常好的“hack”,因此多个工具(例如ProcExp、windbg)不必处理特殊情况的仅内核线程或空闲函数调度程序。如果你是一个只有内核的线程,你就没有关联的进

c - 启动时自动启动过程

我正在为我的大学制作一个CloudDrive程序(例如dropbox,但更简单),它允许用户自动上传文件到服务器并与其他用户共享我想做一个选项,这样如果有人启动机器,进程就会自动启动我想我必须做的是在注册表中的键处添加一个条目:HKEY_LOCAL_MACHINE/sofware/Windows/CurrentVersion/Run我写了这些代码行:system("REGADDHKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run/vuCloud.exe/tREG_SZ/d\"C:\\Desktop\\

c++ - 如何使用 C++ 在 Windows 中创建守护线程?

我正在尝试使用nativeAPI在C++中为Windows创建一个守护线程,但我似乎找不到任何对守护线程的引用。有没有人有与此相关的文档的链接,或者在Windows上是否有不同的术语?如何在C++中的Windows上创建守护线程? 最佳答案 在Windows中,当进程准备好退出时,您的主线程应该调用ExitProcess或从main()函数返回。如果有其他不应终止的线程正在运行,您有责任跟踪这一点,并且在这些线程完成之前不要退出主函数。实际上,这意味着所有线程都是“守护线程”。(原则上,没有线程是守护线程;如果您显式终止主线程,则该

c - 键盘映射的后台c程序

我在我的windows8系统中安装了一个BrammaTTF文件。通过windows字符映射表,我能够找到单个字符代码。下面附上map截图。我们可以在右下方看到“!”的字符代码。是0x21。同样,我可以找到所有其他字母的所有字符代码。现在,我使用基于美国的键盘布局为该字体定义了一个字符映射。例如,我将键盘中的物理字符“a”映射到第3行和第1列中显示的字符。[每当我从键盘上按'a'时,必须显示相应的字符]我想编写一个后台C程序,以便它监听键盘敲击,并且根据我之前定义的字符映射,我的C程序应该输出映射的字符。即,当我从键盘敲击字符“a”时,它应该返回映射的字符。谁能帮我解决这个问题,或者只是

C、Windows API 根据注册表项创建文件夹结构

所以我试图在注册表项之后创建一个文件夹结构。这是我到目前为止所做的#include"stdafx.h"#include"windows.h"#defineMAX_KEY_LENGTH200#defineMAX_VALUE_NAME16383DWORDretCode;voidRecursiveQueryKey(HKEYhKey){HKEYnextKey;WCHARachKey[MAX_KEY_LENGTH];DWORDcbName;DWORDretCode=NULL;DWORDi=0;while(retCode!=ERROR_NO_MORE_ITEMS){cbName=MAX_KEY_L

c++ - 如何打开只有 FILE_READ_ATTRIBUTES 权限的文件?

我想从非管理员程序发出FSCTL_GET_NTFS_VOLUME_DATA控制代码。该文档说“打开卷时,FILE_READ_ATTRIBUTES或FILE_WRITE_ATTRIBUTES访问权限就足够了”,所以我相信这应该是可能的。我尝试了路径和卷路径:"\.\C:""\?\Volume{4f26a671-c36e-11e2-913d-806e6f6e6963}"虽然我可以打开它们,但对DeviceIOControl的调用将仅适用于GENERIC_READ|GENERIC_WRITE。这是代码:intmain(){char*mount="\\\\.\\C:";HANDLEhHandl

为两个不同的进程创建共享内存

因此,我尝试在C程序中创建一个共享内存段,这样我就可以在其中写入一个简单的字符,然后从另一个C程序中读取该字符。我一直在尝试使用calloc()和malloc()但我相信这只适用于该程序自己的heap.是否有另一个函数可以做同样的事情,但在RAM内存中?也许通过十六进制值?还是我错了,这些函数实际上保留了对所有进程可见的内存?提前致谢。编辑:-我正在使用Windows8。-语言不限于C,可以是任何其他语言。 最佳答案 有很多InterprocessCommunications当您需要在隔离的进程之间传输数据时,您可以选择。共享一bl

c - 从 cmd.exe 运行时如何从 cscope-win32 启动 gvim.exe?

多年来,我的WindowsC标记/作用域解决方案几乎一直有效。我可以构建文件列表,为vim/gvim导航构建标签(通过ExuberantCtags),构建cscope.out,并在我通过单击C源文件启动的gvim.exe窗口中标记。最后一个问题是,当我选择一个项目时,我似乎无法在cmd.exe中获取cscope来启动我的编辑器。我确保gvim.exe在我的Path环境变量中。我确保设置了CSCOPE_EDITOR环境变量(更多内容见下文)。但是当我从cscope中选择一个行项目时,编辑器没有启动。相反,我遇到以下两个失败之一:如果CSCOPE_EDITOR是gvim.exe-f或“gv